package com.futureCloudMOM.core.service;

import com.futureCloudMOM.core.domain.ProduceTaskBill;
import com.futureCloudMOM.core.base.service.BaseService;
import com.futureCloudMOM.core.domain.ProduceTaskBillRoutingProcess;
import com.futureCloudMOM.core.domain.ProduceTaskBillSub;

import java.util.List;

/**
 * 【Produce_TaskBill】的数据库操作Service
 *
 * @author Administrator
 * @since 2023-06-06 16:02:57
 */
public interface ProduceTaskBillService extends BaseService<ProduceTaskBill> {


    /**
     * 审核
     *
     * @param id 生产订单ID
     */
    void approve(Long id);

    /**
     * 反审核
     *
     * @param id 生产订单ID
     */
    void deApprove(Long id);

    /**
     * 下达
     *
     * @param id 生产订单ID
     */
    void release(Long id);

    /**
     * 反下达
     * <p>
     * 判断dispatch表里 有没有已经排下的订单,如果有就无法反下达
     * 如果没有 则删除 ProduceTaskBillSub 表数据,状态改回审核
     *
     * @param id 生产订单ID
     */
    void withdrawalOfRelease(Long id);

    /**
     * 生产订单关闭
     * @param id
     */
    void produceClose(Long id);

    /**
     * 生产订单反关闭
     * @param id
     */
    void produceUnclose(Long id);

    /**
     * 根据生产计划ID 查询工艺工序信息
     * @return
     */
    List<ProduceTaskBillRoutingProcess> getProcessListByTaskBillId(Long id);

    /**
     * 根据生产计划ID 查询子表
     */
    List<ProduceTaskBillSub> getTaskBillSubListByTaskBillId(Long id);

}
